<template>
  <div style="margin: 20px">
    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
      <el-alert
        title="步道乐跑手机号"
        type="success"
        :closable="false"
      />

      <el-form-item label="手机号" prop="phone">
        <el-input v-model="form.phone" size="small" />
      </el-form-item>

      <el-form-item v-if="status" label="验证码" prop="code">
        <el-input v-model="form.code" size="small" />
      </el-form-item>

      <el-form-item>
        <el-button v-if="!status" size="small" @click="lepaoSendSmsCode">获取验证码</el-button>
        <el-button v-else size="small" @click="lepaoLogin">登录</el-button>
      </el-form-item>

    </el-form>
  </div>
</template>

<script>
import { lepaoLogin, lepaoGetCode } from '@/api/run'
// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
// 例如：import 《组件名称》 from '《组件路径》'

export default {
  // import引入的组件需要注入到对象中才能使用
  components: {},
  props: {},
  data() {
    // 这里存放数据
    const validatePhone = (rule, value, callback) => {
      callback()
    }

    const validateCode = (rule, value, callback) => {
      if (!/^\d{6}$/.test(value)) {
        callback(new Error('6位数验证码'))
      } else {
        callback()
      }
    }

    return {
      status: false,
      form: { phone: '', code: '' },
      rules: {
        phone: [{ required: true, trigger: 'blur', validator: validatePhone }],
        code: [{ required: true, trigger: 'blur', validator: validateCode }]
      }
    }
  },
  // 计算属性 类似于data概念
  computed: {},
  // 监控data中的数据变化
  watch: {},
  // 声明周期 - 创建完成（可以访问当前this实例）
  created() {},
  // 声明周期 - 挂载完成（可以访问DOM元素）
  mounted() {},
  beforeCreate() {}, // 生命周期 - 创建之前
  beforeMount() {}, // 生命周期 - 挂载之前
  beforeUpdate() {}, // 生命周期 - 更新之前
  updated() {}, // 生命周期 - 更新之后
  beforeDestroy() {}, // 生命周期 - 销毁之前
  destroyed() {}, // 生命周期 - 销毁完成
  activated() {},
  // 方法集合
  methods: {
    lepaoSendSmsCode() {
      this.$refs['form'].validate((valid) => {
        if (valid) {
          lepaoGetCode({ phone: this.form.phone })
            .then((data) => {
              this.tips(`${data.info}`, "success")
              this.status = true
            })
            .catch((err) => { this.$message.error(err.message) })
        } else {
          return false
        }
      })
    },
    lepaoLogin() {
      this.$refs['form'].validate((valid) => {
        if (valid) {
          lepaoLogin({ phone: this.form.phone, msgCode: this.form.code })
            .then((data) => {
              if (data.access_token !== undefined) {
                this.tips(`欢迎回来：${data.name}`, "success")
                this.$store.dispatch('user/setImg', data.img)
                setTimeout(() => {
                  this.$router.push('/lepaotiyu/index')
                }, 1000)
              }
            })
            .catch((err) => { this.$message.error(err.message) })
        } else {
          return false
        }
      })
    },

    tips(title, type) {
      this.$message({
        message: title,
        type: type
      })
    },
  } // 如果页面有keep-alive缓存功能，这个函数会触发
}
</script>
<style scoped>
</style>
